package com.company.array;

import java.util.*;

/**
 * @author jrue
 * @description https://leetcode-cn.com/problems/unique-number-of-occurrences/
 * @date 2019/11/15 17:06
 * 给你一个整数数组 arr，请你帮忙统计数组中每个数的出现次数。
 * 如果每个数的出现次数都是独一无二的，就返回 true；否则返回 false。
 */
public class UniqueOccurrences {

    public static void main(String[] args) {
        System.out.println(uniqueOccurrences(new int[]{-3,0,1,-3,1,1,1,-3,10,0}));
    }

    public static boolean uniqueOccurrences(int[] arr) {
        Map<Integer,Integer> map = new HashMap<>();
        Set<Integer> set = new TreeSet<>();
        for (int i = 0; i < arr.length; i++) {
            map.put(arr[i],map.getOrDefault(arr[i], 0) + 1);
        }

        Collection<Integer> values = map.values();
        for (Integer value : values) {
            if (set.contains(value)) return false;
            set.add(value);
        }

        return true;
    }

}
